package uast.bpdex.actions.addProy2;

import uast.bpdex.actions.addProy2.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import java.util.regex.*;
import uast.bpdex.forms.addProy2;
import uast.bpdex.BaseDatos.*;
import uast.bpdex.*;
import java.sql.SQLException;


/**
 *
 *Clase utilizada para manipular las acciones sobre el formulario addProy
 */
public class addProy2Action extends org.apache.struts.action.Action {

    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        String target = "failAddProy2";
        String tipo ="";
        String[] valores;
        String[] obj = new String[6];
        String[] metas = new String[6];
        String[] actividad = new String[6];
        String[] tiempo = new String[6];
        String[] recursos = new String[6];
        String[] resultado = new String[6];
        String[] responsable = new String[6];
        String[] costo = new String[6];
        String[] aportorga = new String[6];
        String[] aportotro = new String[6];
        String[] aportcomu = new String[6];
        String[] monto = new String[6];
        String id = "06-11-006";
        String nombre = "proponente1";
        String idpe;
        String idpf;
        String idpre;
        String rubro = "";
        String meseleg = "";
  
        DataBase db;
        Pattern p;
        Matcher m;
        Proyecto proy;
        Proyectlcp plcp;
        PlanOperativo po;
        Recursos rec;
        int i;
        int j;
        
      

        if(form == null)
          return mapping.findForward(target);

        addProy2 form0 = (addProy2)form;

        valores = new String[39];

        // Se agregan todos los parametros singulares del formulario en un arreglo
        // de valores
        valores[0] = form0.getObjetivos();
        valores[1] = form0.getJustificacion();
        valores[2] = form0.getNombProy();
        valores[3] = form0.getNromujer();
        valores[4] = form0.getResumen();
        valores[5] = form0.getMontoPropio();
        valores[6] = form0.getMontoOtros();
        valores[7] = form0.getMontoBPDEx();
        valores[8] = form0.getcTotal();
        valores[9] = form0.getObjetivo();
        valores[10] = form0.getNroProf();
        valores[11] = form0.getNroObr();
        valores[12] = form0.getNroEst();
        valores[13] = form0.getNroEmp();
        valores[14] = form0.getMuniBenef();
        valores[15] = form0.getEdoBenef();
        valores[16] = form0.getRelevancia();
        valores[17] = form0.getProduct();
        valores[18] = form0.getNrohombre();
        valores[19] = form0.getNronino();
        valores[20] = form0.getNroadulto();
        valores[21] = form0.getNombInsti();
        valores[22] = form0.getNroInsti();
        valores[23] = form0.getNrodisc();
        valores[24] = form0.getComunBenef();
        valores[25] = form0.getNombMiembros();
        valores[26] = form0.getNroMiembros();
        valores[27] = form0.getNrootro();
        valores[28] = form0.getMontolcp();
        valores[30] = form0.getEval();
        valores[33] = form0.getCapacEjec();
        valores[35] = form0.getAsoExter();
        valores[36] = form0.getBenef();
        valores[38] = form0.getArea();
        
        // Se coloca el nombre correspondiente al area del proyecto
        
                if (valores[38].equals("a1"))
                    valores[38] = "Ejecución de proyectos de desarrollo "
                        + "socio-comunitario";
                else if (valores[38].equals("a2"))
                    valores[38] = "Creación de nuevos empleos permanentes";
                else if (valores[38].equals("a3"))
                    valores[38] = "Formación socio-productiva de "
                        + "integrantes de la comunidad";
                else if (valores[38].equals("a4"))
                    valores[38] = "Venta de bienes a precios solidarios o "
                        + "al costo";
                else if (valores[38].equals("a5"))
                    valores[38] = "Aporte en especies a programas sociales "
                        + "determinados por el Estado o a instituciones "
                        + "sin fines de lucro.";
                else if (valores[38].equals("a6"))
                    valores[38] = "Cualquier otro que satisfaga las "
                        + "necesidades prioritarias del entorno";

       // Los parametros de tipo listas (para los cuadros) se agregan cada uno
       // en su respectivo arreglo                 
        obj = form0.getObj();
        metas = form0.getMetas();
        actividad = form0.getActividad();
        tiempo = form0.getTiempo();
        recursos = form0.getRecursos();
        resultado = form0.getResultado();
        responsable = form0.getResponsable();
        costo = form0.getCosto();
        aportorga = form0.getAportorga();
        aportotro = form0.getAportotro();
        aportcomu = form0.getAportcomu();
        monto = form0.getMonto();
        

        db = new DataBase();

        try{
              //Se crea el proyecto generico y se crea un proyecto de tipo lcp
              proy = new Proyecto(id,nombre,valores[2],valores[4],valores[38],valores[14],valores[15],valores[24],valores[9],valores[17],valores[25],valores[26],valores[21],valores[22],valores[5], valores[6],valores[7],valores[8],valores[36],valores[30],valores[16],valores[35],valores[33],valores[10],valores[11],valores[12],valores[13]);
              plcp = new Proyectlcp(id,valores[0],valores[1],valores[3],valores[18],valores[19],valores[20],valores[23],valores[27],valores[28]);
             // Se agregan en la base de datos 
              db.agregarProyecto(proy);
              db.agregarProyectlcp(plcp);
              /* Para el cuadro de Plan Operativo, en donde el maximo de campos es 6,
              * se recorre el arreglo de actividades y si tiene contenido se crea
              * un plan operativo con los parametros necesarios. Lo mismo ocurre con la
              * tabla de recursos 
              */
             for (i = 0; i < 6; i++){
              if (!actividad[i].equals("")){   
              po = new PlanOperativo(id,obj[i],metas[i],actividad[i], tiempo[i], recursos[i],  resultado[i],responsable[i]);
              db.agregarPlanOperativo(po);
              rec = new Recursos(id, actividad[i], recursos[i], costo[i],aportorga[i], aportotro[i], aportcomu[i], monto[i]);
              db.agregarRecursos(rec);  
              }
              }
              
              target = "succAddProy2";
        }catch(Exception ex0){
           return mapping.findForward(target);
        }
        return mapping.findForward(target);
    }
}